[ZhuJei]C++実験2.1/2.2

6805 ワード

実験内容://zhangguizhuはいい先生です!テーマ2.1ビット演算を利用して1つの128ビットの数を2倍に拡大する
  :        128       。
  :  :4 12 9 5
   :00000000000000000000000000001010 00000000000000000000000000010010 00000000000000000000000000011000 00000000000000000000000000001000 

  2.2 :        int float  ,     ,           .

  :        int float  ,     ,           .
  :  :8
      :00000000000000000000000000001000 

                  ,                   。
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define INF 0x3f3f3f3f
#define EPS 1e-24
using namespace std;

//  2.1,2.2
/*Tips:        ,128            int      
 *      int,   ll       
 *             ,      
 *          float  ,         int/float            
 *  java floatBitsToInt(),               
 *    :
3
4 12 9 5
4294967295 2147483647 5 6
2147483647 5 6 4294967295
3
8
127
9999
4
125.5
2.33
0.125
1024.2
 */
typedef long long ll;
const ll Mod = 1e9 + 7;
//      
void print_binary(int x){
    for(int i=31;i>=0;i--){
        cout<< ((x&(1<0);
    }
    cout<<" ";
}
void print_binary2(char x){
    for(int i=8;i>=0;i--){
        cout<< ((x&(1<0);
    }
    cout<<" ";
}
//      1/0
int check(int x){
    /*if((x&(1<<31))!=0)
        return 1;
    else return 0;*/
    return ((x&(1<<31))!=0);
}

void problem_one(){
    cout<<"128      2(   ):"<unsigned int a,b,c,d;//a  
    int T;
    cin>> T;
    while(T--){
        cin>>a>>b>>c>>d;
        int flag_a = check(a),flag_b = check(b),flag_c = check(c),flag_d = check(d);
        a <<= 1;b <<= 1;c <<= 1;d <<= 1;//cout<
        c = c | flag_d;
        b = b | flag_c;
        a = a | flag_b;
        //     
        print_binary(d); ;print_binary(c); print_binary(b); print_binary(a); cout<void problem_two_int(){
    cout<<"          :"<int T;
    cin>> T;
    int num;
    while(T--){
        cin>>num;
        print_binary(num);
        cout<void problem_two_float(){
    cout<<"           :"<int T;
    cin>> T;
    float num;  
    while(T--){
        cin>>num;
        int *numD = (int *)&num;
        print_binary(*numD);
        //char *p = (char *) &num;
        //print_binary(*numD);
        /*print_binary2(*p);
        print_binary2(*(p+1));
        print_binary2(*(p+2));
        print_binary2(*(p+3));*/
        cout<int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);

    problem_one();
    problem_two_int();
    problem_two_float();
    return 0;
}