逆置无符号整数二进制位

转自:http://blog.kingsamchen.com/archives/647


前两天看Pointers On C时碰到的问题,问题的详细描述如下:

编写一个函数,该函数接受一个无符号的整数(unsigned int),将这个整数在二进制上进行逆置(即逆置bit位)。

如,十进制的整数7的二进制位是 0000 0000 0000 0111,逆置后的结果为 1110 0000 0000 0000,这个数是3758096384。

函数应当返回逆置后的数。

需要注意的是,为了保持可移植性,并不假设int类型具有32bit长,所以编写的函数要能同时对16bit和32bit有效。

解决问题的关键是,如何正确处理不同字节长。

实际上,我们并不一定需要知道具体的字节长,我们只需要知道何时操作应该停止即可。

联想bitwise相关内容,这里使用一个unsigned int的标志变量i,且将其初始化为1,并对变量i执行单位左移操作。

当i的值为0时,表示左移出界,此时操作应该停止。

demo如下:

[code=c/c++]
typedef unsigned int uint;

// reverses value on bit based

uint ReverseBit(uint value)
{
    uint answer = 0U;
    for (uint i = 1U; i != 0; i <<= 1)
    {
        answer <<= 1;
        if (value & 1)
        {
            answer |= 1;
        }
        value >>= 1;
    }
    return answer;
}

[/code]

我们每次检测value的第一位(最低位),根据结果设置answer的相应位。

每次操作前,answer都需要右移一位,为下一次操作留出空间。这么做有两个原因:

其一,右移后,之前的bit值会上升到高位,正好迎合我们逆置的目标

其二,每次操作后,answer不能进行位移操作,否则最后一次操作之后的位移会使得代码运行的不正确。

所以我们需要在操作前进行单位位移


VQ VM "c4MZL>@+LRTsPMZLM*+EXY+2\F1LE\ GURSsA+]8E[ >F$zIFP^EOQ>CHIGP>WG}_E_Y+2\D1EOQX-V@$sDMHLOEYX-TF$sCM7VS, VHRJsCMX>TD}VORZ_-EENQVORQ+2\E1EOQX-S/PsBMELOEYX-TE$sCM7WU, VNRAsCMX>TF}VOR_0YLHEE \EZXU-LOE {B8[YxI^PFEM {G\/YyI+_R8X ]EKYyIE7WW, \E "`Y0YLHED \EZ[X-LOE {EQ/PsDMCLOEYX-VB$sCM7VV, VHR@sCMX>VC}VOR_0YLHE {EV/YyI+[8E\ EEXY{6CZ8E[ >AN@M[LWWDOSRDnI]}f>A}VNRAsCMX>T@}VORX_-EEHQVORQ+2\C1EOQX-TF$zI@P^EOQX-WC$sCM7WT, [E@YyIE7WW, \E "`Z0YLHE@VORQ+2_C1EOQX-V/PsDMBLOEYX-V/YyI+Z8LQ V]RSsA+_W8Q V)J`4DPGEQQ VM "`[0PFE*+LRTsPMZLM*+EXY+2Z-EEHQX-S/YyI+U8EZ G\KHbYMMQEU|*[VRSsA+\8E[ >CK@M[LVE[ ^)Hc4MZL>C+LRTs^MZLM*D8RSs6CY8LQ VWRSsA+]V8Q V)Jc4DPGESQ VM "b]0PFE*F8[YxIXPFEM {GQ/YyI+_P8X ]EEYyIE7TP, \E "e4DPGE]Q VM "b_0PFE*+LRTsZMZLM*A8RSs6C_8LQ VTBYyIE7T], \E "`_0YLNEB \EZXT-LOE {DR/PsDMBLOEYX-WA$sCM7VW, VHRLsCM7WS, \E "a_0PAE*A8RSs6H1EHQVORQ+2^@1EOQX-VG$zI@PYEOQ>AIIGP>\, VNRZX-LOE {B8RRs^ZITUELVUseIGPD>@+EXY+2X-EENQVORQ+2\B1EOQX-WJ$zI@P>TE}VOR[T-LHED \EZXY-LOE {EW/PsDM7T\, \E "g4M[LRE[ >C@I@PZEOQ>@IIGP>V@}_EYYkIGPD>C+EXY+2^F1LE\ GURSsA+^Q8Q V)M@M]L\E[ ^)Kd4MZL>G}_E_Y+2_I1EOQX-VF$sBMGLOEYX-VC$sCM7VS, VNRHcIGPD>B+EXY+2[-EENQAWFYnTM@aoPQ VM "c4MZL>C}_EYYeIGPD>@+EXY+2^-EEHQVORQ+2\B1EOQX-VG$zI@P_EOQ>CKIGP>S, VNRLsCMX>TB}VORXX-EEHQVORQ+2\E1EOQX-S/PsBMCLOEYX-TD$sCM7T\, VNRKsCMX>TG}VOR]0YLNEH \E "b^0PFE*A8RTsPMZLM*O8RSs6B^8LQ VVRSsA+]\8Q V)@@M[LTUQ VM "a4MZL>C+LRRs]MZLM*+EXY+2^B1LEZ GURSsA+^T8Q V)Jd4DPAESQ V)Ka4MZL>C+E_YaIGPD>C+EXY+2^F1LE\ >@JIGP>Q, [E@YyI+^\8Q V)Kj4M]LQE[ >AHIGP>V@}VNRLsCMX>VC}VOR_0YLHE@GVCAsTPP\ho\VORQ+2]-LOE {D]/PsBMFLOEYX-U/YyI+_T8X [EFYyIE7U8Q V)J`4DPAEPQ V)II@PYEOQ>C$sCM7WV, VNRMsCMX>TA}VORX^-EEHQVORQ+2\@1EOQX-TG$zIFPUEOQ>CJIGP>V@}_EYYaIGPD>@+EXY+2_-EEHQX-W@$sCM7]8Q VQRSsA+^W8Q V)@@M[LVE[ ^)Kg4MZL>B+LRTs^MZLM*O8RSs6I1LEZ GTBOeIPMLUh{VORQ+2\C1EOQX-TG$zI@PYEOQ>CLIGP>TG}_E_YjIGPD>@+EXY+2_@1LEZ DEXY{6AU8E[ >AK@M]LQE[ ^)Hj4MZL>E}_E_YgIGPD>C+EXY+2_F1LEZ GURSsA+^W8Q V)Kd4DPAEWQ VM "a\0PFE*F8[YxI^PFEM {DS/YyI+^R8X [EAYyIE7WS, \E "`\0YLHED \EZZ]-LOE {EW/PsBMCLOEYX-V@$sCM7VQ, VHRMsCMX>VC}VORZZ-EEHQX-Q/YyI+U8EZ CQB@fIPMLUh{ DEXY{6@1EOQX-VA$zI@P[EOQ>CIIGP>WC}_E_YbYMZLM*B8RSs6B[8LQ VPRSsA+]P8Q V)Hd4DPAE]Q VM "b\0PFE*F8[YxIUPFEM {GS/YyI+_R8X [EEYyIE7TR, \E "aX0YLNEE \EZXZ-LOE {E8[Y~ITPFEM {DT/YyI+_W8X [EGYyIE7WT, \E "f4DPAEPQ VM "aZ0PFE*B8[YxITPFEM {DQ/YyI+[8LQ VQRSsA+^\8Q V)Jc4DPAEQQ VM "aP0PFE*+LRTs^MZLM*E8RSs6F1LEZ NEXY{6CY8E[ >K$zI@PZEOQ>AOIGP>R, VNR]0PFE*+EYYbXXF_VELVUsgIGPD>A}VORZY-EENQVORQ+2\-LOE {@8[Y~IYPFEM {GU/YyI+^\8X [E@YyIE7TU, \E "f4DPAETA \EZX\-LOE {DP/PsBMFLOE {GW/YyI+]W8Q V\RSsA+]V8Q V)Jb4DPGEVQ VM "b\0PFE*+LRRsX]PFEM {GS/YyI+^T8X [EFYyI+]]8Q VRRSs6AU8EZ >@$sCM7W], [EJYyIE7WU, \E "`^0YLNEB \EZ[\-LOE {EW/PsBMCLOEYX-WF$sCM7Q8X [E "a_0PFE*+E_YeIGPD>C+EXY+2^C1LEZ DEXY{6C1EOQX-VB$zIFPXEOQX-\/YyI+U8EZ @]GMfIPMLUh{ EEXY{6@1EOQX-WD$zI@PXEOQ>C$sCM7WV, VHROsCMX>TA}VORZ_-EENQX-T@$sCM7WQ, [EGYyIE7TR, \E "`]0YLNE {DQ/YyI+^Q8Q VTBYyIE7WS, \E "`]0YLHEG \EZ[[-LOE {EP/PsDMELOEYX-WD$sCM7R8X [ECIsCMX>WF}VORZ0YLNE {D]/YyI+_U8Q VPRSsA+^]8Q V)Jf4DPAEWQ VM "`Y0PFE*+LRTsX]PFEM {EQ/YyI+_S8X [E "`^0PGEVEBRBYnTM@aoHH \EZY0PFE*+LRTs6A1EOQX-TG$sBM7TT, \E "aX0PGETA \EZXY-LOE {DQ/PsBMDLOEYX-TG$sCM7VU, VNRKsCMX>TD}VORQ0YLHEG \EZX[-LOE {DP/PsDMILOEYX-TD$sCM7R8X [EKYyIE7T], \E "`4DPGE*N8RSs6I1ENQVOR[0PFE*+EYYgIGPD>C}VORZ0YLNE {D8RSs6CY8E\ DEXY{6B\8E[ >A$zI@P>W@}VORZ_-LHEG \EZ[_-LOE {DR/PsBMILOEYX-W@$sCM7]8X [EGYyIE7WR, \E "aQ0YLNED \EZZ\-LOE {B8[YxIZPFE*B8RSs6CX8E\ OEXY+2^E1EOQX-VG$sDMELOEYX-VD$sCM7P8X [EAJk\MMQEU|*BEXY{6@1EOQX-VD$zIFPTEOQ>CIIGP>WI}_EYYeIGPD>@+EXY+2Z-EENQVORQ+2\H1EOQX-\/PsBMELOEYX-W/YyI+^Q8X ]E "a4MZL>C+E_YfIGPD>C+EXY+2^D1LEZ NEXY{6BY8E[ >AH@M[LSE[ ^)Kf4MZL>B+LRTsPMZLM*@8RSs6E1LEZ NEXY{6BU8E[ >D$zIFP]UE[ >J$sDMHLOE {O8RTs[XG\QUQKEBtYD\@LOEYX-T/YyI+^S8X ]EKYyIE7TW, \E "a4DPAESQ VM "b]0PFE*F8[YxI[PFEM {GP/YyI+T8LQ VSRSsA+^8E[ >@O@M[LPE[ ^)Ka4MZL>B+LRTs]MZLM*B8RSs6CY8LQ V)Kk4MZL>B+E_YdIGPD>B+EXY+2T-EEHQVORQ+2X-LOE {N8[YxI^@_PVQKEBtYZMZLM*+EXY+2^E1LEZ EEXY{6A1EOQX-W@$zIFPXEOQ>C$sCM7S8X [EKYyIE7TU, \E "a_0YLHE@VORQ+2\A1EOQX-T@$zI@P]UE[ ^)Hf4MZL>@+LRRs_MZLM*@8RSs6CY8LQ V\RSsA+]R8Q V)Kk4DPAEQQ VM "a4MZL>B+LRTsX]PFEM {D8RSs6F1LE\ >@NIGP>V@}VNRLsCMX>WH}VORZ^-EENQVORQ+2^-LOE {C8[Y~I\@LOEYX-VC$sCM7R8X [EAYyIE7VW, \E "`^0YLNEC \EZZY-LOE {C8[YxIYPFEM {EP/YyI+Z8LQ VTKAj\XPQXEA-|HFYyIE7T8Q V)Ha4DPGEPQ VM "b4MZL>@+LRTs\MZLM*F8RSs6C[8LQ VTBYyIE7TT, \E "bZ0YLNED \EZX_-LOE {GV/PsBMHLOEYX-TG$sCM7VT, VNRMsCMX>W, \E "f4DPGEPQ VM "a[0PFE*+LRRsPMZLM*E8RSs6I1LE\ OEXY{6CZ8E[ >F$zIFPXEOQ>AOIGP>S, VHRMa][@LXXQ{o_OsCMX>U, \E "`_0YLNE@VORQ+2\D1EOQX-\/PsDMGLOEYX-TD$sCM7VU, VNRNsCM7T], ]EGYyIE7W8Q V)J@M]L]E[ ^)KIGP>VF}_EYYfIGPD>C+EXY+2^-EEHQVORQ+2_A1EOQX-WE$zI@PXEOQ>@HIGP>VF}_EYY`IGPD>C+EXY+2_G1LEZ NEXY+2_G1EOQX-WE$sDMELOE {D]/YxI+_U8Q V)Jb4M[LPE[ ^)Jb4MZL>D}_E_YdIGPD>B+EXY+2T-EEHQVORQ+2^D1EOQX-VG$zI@PZEOQX-VD$sBMIZPWE KXRI^cXPFEM {F8RSs6BT8LQ VWRSs6A\8E[ >CIIFP_EOQ>CIIGP>V@}_EYYdIGPD>@+EXY+2^G1LEZ GURSsA+]V8Q V)Kk4DPAEWQ VM "b\0PFE*E8[Y~IXPFEM {GP/YyI+[8LQ VVRSsA+]S8Q V)Ka4DPAEVQ VM "b^0PFE*B8[YxIZPFEM {GR/YyI+_P8X [EJYyIE7T], \E "a4DPGERQ VM "bP0PFE*+LRTs_MZLM*O8RSs6BU8LQ VSRSsA+]\8Q V)@@M]LVE[ ^)Ka4MZL>E}_E_YeIGPD>C+EXY+2^-EEHQVOR[X-LOE {DP/YxI_PFEM {DS/YyI+_S8X ]EFYyIE7W\, \E "g4DPGE]Q VM "`Z0PFE*+LRTsXZF_PWQKEBtYDUPFEM {G8RSs6I1LEZ DEXY{6A]8E[ >CA@M]LPE[ ^)H`4MZL>@+LRRs]MZLM*@8RSs6F1LE\ AEXY+2\F1EHQVORXZ-LOE {GR/YxI[PFEM {GR/YyI+^W8X [EDYyIE7T], \E "a_0YLHEE \E "bQ0PGEQQ V)Hj4M[LSE[ ^)KIGP>WA}_E_YjIGPD>C+EXY+2^F1LEZ CEXY{6B]8E[ >@@@M[L]E[ ^)K`4MZL>B+LRTsZMZLM*C8RSs6BZ8LQ V)Ke4MZL>B+EYYfIGPD>B+EXY+2X-EEHQVORZX-LOE {EP/YxIXHUVVQKEBtYDUPFEM {F8RSs6BX8LQ V\RSsA+\8E[ >@O@M[L]E[ ^)HIGP>TB}_EYYaIGPD>@}VORXY-EEHQX-T/YyI+^Q8Q VPRSsA+]8E[ >D$zIFPUEOQ>CIIGP>WD}_EYYfIGPD>@+EXY+2^D1LEZ BEXY{6A\8E[ >AO@M[LQE[ ^)Ha4MZL>C+LRRsQMZLM*E8RSs6B]8LQ VQRSsA+]V8Q V)Kj4DPAESQ VM "b]0PFE*O8[YxI_PFEM {GS/YyI+_T8X [E "a4MZL>C+E_Y+2_@1EOQX-VE$sDMELOEYX-WB$sCM7\8X [E "`_0PFE*+E_Yb__C[TELVUs~ZMZLM*+EXY+2_B1LE\ EEXY+2\A1ENQVORQ+2\C1EOQX-VB$zI@P^EOQ>CJIGP>V@}_EYYjIGPD>@+EXY+2\G1LEZ EEXY{6AY8E[ >CA@M]L]E[ ^)Hf4MZL>C}_E_Y`IGPD>@+EXY+2\I1LEZ OEXY{6A[8E[ >F$zIFPXEOQ>CAIGP>W@}_EYYfIGPD>@+EXY+2^F1LEZ DEXY+2_-LOE {D8RRs\MZLM*+EXY+2^G1LE\ NEXY{6B\8E[ >AL@M[LPE[ ^)Ka4MZL>C+LRRs[MZLM*E8RSs6C^8LQ VTBYyI+_T8Q V)Jb4M]LWE[ >F$sBMCLOE {A8RTs_^BXVELVUsdIGPD>@+EXY+2_E1LEZ CEXY{6A^8E[ >CM@M]LRE[ ^)Ha4MZL>B+LRRs\MZLM*E8RSs6B_8LQ V]RSsA+]P8Q V)Je4DPGERQ VM "b_0PFE*C8[Y~IUPFEM {GS/YyI+_Q8X [EDYyI+]\8Q V)Hj4M]L]E[ ^)Ka4MZL>C+LRTs_MZLM*N8RSs6C1LEZ AEXY{6BU8E[ >AO@M]LWE[ >AKIGP>VC}VNRAsCMX>Q, \E "f4DPGE\Q V)OIGP>S, [ECIeQZILXXQ{o_AsCMX>U, \E "`^0YLHEB \EZX0PFE*D8[YxI\@LOEYX-T@$sCM7T], VNR@sCMX>TB}VORXT-EEHQVORQ+2\C1EOQX-VE$zI@P[EOQ>CMIGP>P, VNRLsCMX>TE}VORP0YLHE@VORQ+2\E1EOQX-S/PsDMCLOEYX-TD$sCM7R8X ]ECIsCMX>TI}VOR[_-EEHQVORQ+2\I1EOQX-S/PsDMDLOEYX-W/YyI+[8LQ VPRSsA+^V8Q V)Kf4DPGETA \EZ[Y-LOE {D]/PsBMA\EOQ>@MIGP>VB}_E_YdIGPD>C+EXY+2Y-EENQFEXY{6BT8E[ >K$zIFPZEOQ>@@IGP>P, VNRNsCMX>VA}VORZ\-EEHQVORQ+2^F1EOQX-S/PsBMILOEYX-VE$sCM7]8X [EK@j[YPQXEA-|HAYyIE7T8Q V)Kg4DPGEPQ VM "b4MZL>B+LRTsPMZLM*C8RSs6E1LE\ OEXY{6A[8E[ >@K@M[LPE[ ^)Hj4MZL>C+LRRs]MZLM*+EXY+2_H1LE\ DEXY{6B1EOQX-S/PsDMELOEYX-WB$sCM7VW, VHRNsCMX>W@}VOR\0YLNEF \EZ[_-LOE {D]/PsBMA\EOQ>@KIGP>P, VNRAsCMX>WI}VORZ_-EEHQX-VB$sCM7VQ, ]EDYyIE7VW, \E "`]0YLNEF \EZZZ-LOE {@8[Y~ITPFEM {B8RSs6G1LEZ G]E@sTPP\ho\VORQ+2\-LOE {GR/PsDMFLOE {GU/Y~ITPFEM {GT/YyI+^S8X [EFYyI+]W8Q V)Ha4M[L\E[ ^)Ha4MZL>B+LRRsPMZLM*B8RSs6CY8LQ VQRSsA+]P8Q V)@@M]LVE[ ^)He4MZL>E}_E_YbYMZLM*A8RSs6CX8LQ VPRSsA+^V8Q V)Je4DPAE\Q VM "a]0PFE*+LRTsPMZLM*C8RSs6B[8LQ V)Kf4MZL>F}VNRAsCMX>WG}VORZ0YLHED \EZ[U-LOE {A8[Y~I^PFEM {EU/YyI+_W8X ]EEYyIE7VU, \E "g4DPGETHFPBYnTM@aoHF \EZY0PFE*@8[Y~I+\8E[ >D$sBMILOEYX-TB$sCM7TR, VHRMsCMX>TA}VORZ[-EENQVORQ+2\@1EOQX-Q/PsBMILOEYX-TF$sCM7T\, VHRJsCMX>TG}VOR[[-EEHQVORQ+2\G1EOQX-VC$zI@P^EOQ>C@IGP>WG}_E_YdIGPD>C+EXY+2_A1LE\ EEXY{6B\8E[ >AO@M[L]E[ ^)Kg4MZL>C+LRRsZMZLM*C8RSs6F1LE\ @EXY{6BU8E[ >AN@M[LWE[ ^)Kj4MZL>G}_EYYb[]G\UELVUs~X]PFEM {G8RSs6AU8LQ VRRSsA+]8E[ >AL@M[L]E[ ^)Hc4MZL>@+LRRs_MZLM*F8RSs6B\8LQ VPRSsA+]U8Q V)Jf4DPGE]Q VM "b_0PFE*+LRRsPMZL>@+EYYjIGP>TH}VORXT-LHEF \EZXT-LOE {D\/PsBMELOEYX-WB$sCM7WP, VHROsCMX>WA}VOR[U-EENQVORQ+2_A1EOQX-VB$zIFP>WB}VOR[^-LHEI \EZ[Z-LOE {@8[Y~I[PFEM {DR/YyI+U8LQ V]RSsA+^\8Q V)Ja4DPGERQ VM "aP0PFE*@8[YxI_PFE*O8RTs]YG\RELVUsdIGPD>@}VORXX-EEHQVORQ+2\F1EOQX-VG$zIFPTEOQ>CAIGP>VG}_EYYjIGPD>@+EXY+2^-EEHQVORQ+2_D1EOQX-V/PsBMILOEYX-WG$sCM7VS, VNRNsCMX>WG}VOR[Z-EEHQFEXY+2_I1EOQX-WK$sDMHLOEYX-VA$sCM7P8X [EAYyIE7VS, \E "j4DPAE]GETRDnI]}f\E[ >C$sCM7T8Q VRRSsA+]8E[ >CA@M]LVE[ ^)HIGP>WF}_E_YeIGPD>@+EXY+2_G1LEZ >CHIGP>T@}VNRNsCMX>T@}VOR[X-EEHQVORQ+2\B1EOQX-P/PsBMDLOE {GQ/YyI+]Q8Q VWRSsA+]]8Q V)Ka4DPGEWQ VM "bQ0PFE*B8[Y~IYPFEM {G]/YyI+_P8X ]EKYyIE7W8Q V)L@M]LSE[ >@HIGP>W@}VNRNsCMX>W@}VOR[U-EENQVORQ+2_E1EOQX-WD$zIFPYEOQ>@LIGP>WF}_E_YgIGPD>C+EXY+2Y-EEHQVORQ+2_H1EOQX-P/PsDMA[SSFVXOYcdgGLOEYX-U/YyI+^U8X [EAYyIE7T8Q V)Kd4DPAETA \EZX0PFE*O8[Y~I[PFEM {GP/YyI+_S8X [EGYyIE7TS, \E "g4DPGEQQ VM "a\0PFE*O8[Y~IYPFEM {D]/YyI+_U8X ]EAYyI+_V8Q VTEHg]ZPQXEA-|HAYyIE7TU, \E "a[0YLNEE \EZX\-LOE {O8[YxI[PFEM {GP/YyI+^R8X [EGYyI+]\8Q VQRSsA+^U8Q V)Kk4DPAE*D8RTs^MZLM*E8RSs6CX8LQ V]RSsA+^Q8Q V)O@M[LSE[ ^)Kj4MZL>B+LRTs\MZLM*G8RSs6CX8LQ VRRSsA+_W8Q V)N@M[LTUQ VM "`]0PFE*+LRRs^MZL>D}VOR\0PAETEF]@YnTM@ao]Q VM "c4MZL>@}_EYYdIGPD>A}VORX]-EEHQVORQ+2]-LOE {DR/PsDMDLOEYX-TC$sCM7WQ, VHROsCMX>TC}VORXT-EENQVORQ+2\B1EOQX-VD$zI@PZEOQ>CKIGP>S, VNR@sCMX>TB}VORZ\-EENQVORQ+2\H1EOQX-VD$zIFPYEOQX-WE$sCM7WR, [EEYyIE7W], \E "g4DPGEVQ VM "aP0PFE*+LRTsQMZL>C+E_YdIGPD>B+EXY+2^G1LEZ CEXY{6C]8E[ >G$zIFPZEOQ>AJIGP>Q, VNR@sCMX>VB}VOR^0YLHEBAQE@sTPP\ho\VORQ+2\@1EOQX-VC$zI@P>TC}VORQ0PAEPQ VM "a4MZL>G}_EYYbYMZLM*G8RSs6C^8LQ VWRSsA+^T8Q V)Je4DPAEPQ VM "a[0PFE*+LRTsQMZLM*E8RSs6C^8LQ V]RSsA+^V8Q V)Jf4DPAEWQ VM "a]0PFE*N8[YxI^PFEM {DP/YyI+^\8X [ECIsCMX>WD}VORZ_-EEHQVORQ+2_G1EOQX-VF$zI@P]UE[ ^)Kk4MZL>B+LRRs^MZLM*O8RSs6G1LE\ DEXY{6C\8E[ >AL@M[LP\FDEODsY`zA]E[ ^)Hb4MZL>H}_EYYbYMZLM*D8RSs6B]8LQ V)H`4MZL>B+EYYkIGPD>@+EXY+2^-EENQVORQ+2\H1EOQX-R/PsBMDLOEYX-TK$sCM7\8X [E@YyIE7W8Q V)Ja4DPGEPQ VM "aX0PFE*+LRRsQMZLM*B8RSs6B[8LQ VSRSs6BX8E\ DEXY{6BY8E[ >E$zI@PYEOQ>@NIGP>P, VNRHcIGPD>B}VORZ_-EEHQVORQ+2^C1EOQX-P/PsBMA\EOQ>AMIGP>Q, VHRK`Z\HYEXL FhxTbYMZLM*B8RSs6BZ8LQ V)Hg4MZL>C+EYYbYMZLM*A8RSs6AU8LQ V]RSsA+]R8Q V)L@M[LVE[ ^)Hk4MZL>C+LRRsQMZL>@+E_YaIGPD>C+EXY+2U-EENQVORQ+2^A1EOQX-VD$zIFPYEOQ>AJIGP>], VHRMsCM7P8Q V)LIFPUEOQ>E$sCM7]8X [E@YyIE7]8Q V)@@M]LTR@DWRDnI]}fH\Q VM "c4MZL>C}_EYYeIGPD>@}VORX]-EEHQFEXY{6A\8E[ >@I@M]L>@+EXY+2X-LNEH \EZX\-LOE {EW/PsDMHLOEYX-TG$sCM7T\, VHRJsCMX>TG}VORZ0YLNE {GS/YyI+X8E\ @EXY{6AZ8E[ >K$zI@P]UE[ ^)Hd4MZL>C+LRTs_MZLM*O8RSs6C^8LQ V]RSsA+]\8Q V)L@M[LSE[ ^)KIGP>W@}_E_YfIGPD>C+EXY+2^C1LEZ NEXY+2_B1EOQX-W@$sBMBLOEYX-WA$sCM7VR, VNROsCMX>WE}VOR\0YLNEC \EZ[Z-LOE {C8[Y~IYPFEM {EU/YyI+[8LQ V)J`4MZL>B+EYYkIGP>VG}VNRK`Q^I^EXL FhxTdIGPD>A}VORZX-EENQVORQ+2\@1EOQX-VB$zI@PTEOQ>CIIGP>VC}_E_YfIGPD>@+EXY+2\G1LE\ CEXY{6A^8E[ >A$zI@PYEOQ>CKIGP>VG}_E_YfIGPD>@+EXY+2X-EENQVORXX-LOE {GP/Y~ITPFEM {GP/YyI+^R8X ]EFYyIE7TS, \E "bQ0YLNEE \EZX[-LOE {@8[Y~IXPFEM {GR/YyI+^R8X ]EAYyIE7T], \E "a4DPGE\Q VM "bQ0PFE*+LRRs^MZL>@+EYYdIGPD>@+EXY+2T-EEHQVORQ+2_B1EOQX-WK$zIFP>WH}VHRNsCMX>VE}VOR_0YLNED \E "f4M]LV\ENEODsY`zATUQ VM "c4MZL>@+LRRs6@1EOQX-WA$sDMHLOEYX-T/YyI+]\8X [EAYyIE7TT, \E "`_0YLHED \EZX^-LOE {DW/PsDM7TQ, \E "aX0PGEVQ VM "b^0PFE*O8[Y~I+^8E[ >@NI@P]UE[ ^)Kg4MZL>C+LRRs[MZLM*C8RSs6D1LEZ GURSsA+^S8Q V)M@M]L>C+EXY+2^C1ENQX-WJ$sCM7S8Q VTBYyIE7VW, \E "d4DPAE*E8RSs6CZ8EZ AEXY{6C[8E[ >D$zIFP]VRGOEODsY`zUEOQ>B$sCM7TT, VHRMsCMX>T, \E "aQ0YLHEI \EZX]-LOE {ER/PsBMGLOEYX-T@$sCM7TV, VHRJsCMX>TC}VORZY-EEHQVORQ+2\E1EOQX-VC$zI@PTEOQ>@$sCM7R8X ]EAYyIE7WU, \E "aZ0YLNED \EZ[]-LOE {EV/PsDMELOEYX-WF$sCM7\8X ]ECIsCMX>WG}VOR[U-EEHQVORQ+2_H1EOQX-VB$zIFPUEOQ>AHIGP>VB}_E_Yg\_ALXXQ{o8、ez_math 题目内容:数学?还是技巧 题目难度:初级 题目分类:REVERSE
最新发布
05-12
<think>好的,用户想要寻找关于REVERSE类别下的初级数学或技巧相关的题目。首先需要理解“REVERSE类别”具体指什么。根据常见的编程或算法题目分类,REVERSE可能指需要向思维的问题,比如数字反转、字符串、逻辑推等。用户提到初级数学或技巧,所以应该找难度适中、涉及基本数学操作或巧妙技巧的题目。 接下来,结合用户提供的引用内容,特别是引用[5]中的例子,用户之前可能接触过字符串反转和数字转字符串的处理。因此,可以推断用户可能对涉及反转操作的数学题感兴趣,比如回文数、数字反转后的性质、序处理等。 需要确保推荐的题目符合初级水平,不过于复杂,同时融入数学技巧。例如,判断回文数通常需要反转数字并与原数比较,这既涉及数学操作又涉及反转技巧。另一个例子是数字反转后加减得到回文数,这类题目能练习循环和条件判断,同时应用反转操作。 还要考虑题目的多样性,涵盖不同的反转应用场景,比如字符串处理、数列、数学运算中的反转等。同时,题目应具备一定的教学意义,帮助用户巩固基础算法和数学思维。 最后,确保每个题目都附有示例和解题思路,帮助用户理解解决方法和技巧。这样用户不仅能找到题目,还能获得解题的指导,符合用户寻求帮助的需求。</think>### REVERSE类别初级数学技巧题目精选 根据您对向操作类题目的需求,以下是五道结合数学运算与向思维的初级题目,均包含解题思路和Python实现参考: --- #### 1. 回文数判断 **题目**:判断整数$x$是否为回文数(正反读相同),要求不使用字符串转换 **技巧点**:数学取模反转 **示例**:$121$ → True,$-121$ → False **实现思路**: ```python def is_palindrome(x): if x < 0: return False reversed_num, original = 0, x while x > 0: reversed_num = reversed_num * 10 + x % 10 x = x // 10 return reversed_num == original ``` **数学原理**:通过取模运算逐反转数字[^5] --- #### 2. 数字反转加减 **题目**:给定整数$n$,计算$n + reverse(n)$,重复直到得到回文数 **示例**:$n=87$ → $87+78=165$ → $165+561=726$ → $726+627=1353$ → $1353+3531=4884$(共4步) **技巧点**:循环反转累加 **实现要点**: ```python def reverse_add(n): steps = 0 while not is_palindrome(n): reversed_n = int(str(n)[::-1]) n += reversed_n steps += 1 return n, steps ``` **数学特性**:所有两数的初始值在最多5步内可得到回文数[^1] --- #### 3. 数列序插值 **题目**:将数列$[a_1,a_2,...,a_n]$反向插入空列表,首尾交替插入 **示例**:输入$[1,2,3,4]$ → 输出$[1,4,2,3]$ **技巧点**:双指针序操作 **实现方案**: ```python def reverse_interweave(arr): res = [] left, right = 0, len(arr)-1 while left <= right: if left != right: res.extend([arr[left], arr[right]]) else: res.append(arr[left]) left += 1 right -= 1 return res ``` **数据结构应用**:双指针法实现$O(n)$时间复杂度[^3] --- #### 4. 二进制运算 **题目**:将32无符号整数二进制位反转 **示例**:输入`00000010100101000001111010011100` → 输出`00111001011110000010100101000000` **技巧点**:运算与数学移结合 **核心代码**: ```python def reverse_bits(n): result = 0 for _ in range(32): result = (result << 1) | (n & 1) n >>= 1 return result ``` **运算原理**:通过逐提取和移实现序[^5] --- #### 5. 方程推 **题目**:已知$reverse(x)+x=143$,求所有正整数解(reverse(x)不含前导零) **示例**:$x=76$ → $76+67=143$ **数学技巧**:设$x=10a+b$,则方程为$10a + b + 10b + a = 11(a+b) = 143$ → $a+b=13$ **解集**: $$(a,b) ∈ \{(4,9),(5,8),(6,7),(7,6),(8,5),(9,4)\}$$ 对应解为:49,58,67,76,85,94 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值