飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2640|回复: 5

C语言位运算

[复制链接]
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2007-1-25 12:42:42 | 显示全部楼层 |阅读模式
    C语言没学好,位运算搞不明白,很是惭愧,有一问题请教兄弟们:

    表达式中C1..C8是常数,s1..s8是变量(常数、变量  类型是16进制数)

    #define C1 0x897E8120
    #define C2 0xE894C465
    #define C3 0x5671B3A6
    #define C4 0x65488944
    #define C5 0x48492458
    #define C6 0x50540150
    #define C7 0x76DBFAAF
    #define C8 0x12165400

    ((((s4^s7)&C3)^s7)^C4) ^ (((s2^s8)&C5)^s8)==C1;
    (((s6^s1)&C6)^s6)^ (((s3^s5)&C7)^s5^C8)==C2;

    列出满足条件的s1..s8
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-25 22:05:03 | 显示全部楼层
    第八章位运算没学。。。有空学完帮你。。:$
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-26 14:44:14 | 显示全部楼层
    今天看了下书。。。把C1...C8的16进制数换成2进制。。。&就是逐比特相与。。。同是1相与为1。。有0相与为0。。
    ^为异或运算。。。
    好像还有逻辑与。。或。。和异或之间的公式。。忘了:$
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-26 17:05:26 | 显示全部楼层

    我朋友说这样,兄弟试试~~

    procedure TForm1.Button1Click(Sender: TObject);
    const
      c1 = $2927907884;
      c2 = $1347682640;
      c3 = $3902063717;
    var
    s1,s6, X, Y: LongWord;
    Cnt: Integer;
    begin
      //ShowMessage(IntToStr(High(LongWord)));
      X := High(LongWord) div 2;
      Cnt := 0;
      Y := 0;
      for s1 := 0 to X do
      begin
        for s6 := X downto 0 do
        begin
          if ((((s1 xor s6) and c2) xor s1)=c1) and
             ((((s6 xor s1) and c2) xor s6)=c3) then
          begin
            Memo1.Lines.Add(inttostr(s1)+'-'+inttostr(s6));
            Inc(Cnt);
          end;
        end;
        Inc(Y);
        Caption := IntToStr(Y * 100 div X) + '%';
        Application.ProcessMessages;
      end;
      ShowMessage(IntToStr(Cnt));
    end;
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-26 20:25:55 | 显示全部楼层
    今天晚上翻翻书,明天告诉你!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2007-1-29 12:40:54 | 显示全部楼层
    原帖由 黑夜彩虹 于 2007-1-26 17:05 发表
    procedure TForm1.Button1Click(Sender: TObject);
    const
      c1 = $2927907884;
      c2 = $1347682640;
      c3 = $3902063717;
    var
    s1,s6, X, Y: LongWord;
    Cnt: Integer;
    begin
      //ShowMessage(IntToStr( ...


    没通过
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表